/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.univalle.logica;

import co.edu.univalle.modelo.Clientes;
import co.edu.univalle.modelo.Inmueble;
import co.edu.univalle.persistencia.IClienteDAO;
import co.edu.univalle.persistencia.IInmuebleDAO;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;

/**
 *
 * @author Jhony
 */
@Stateless
public class InmuebleLogica implements InmuebleLogicaLocal {
    
    @EJB
    private IInmuebleDAO inmuebleDAO;
    @EJB
    private IClienteDAO clienteDAO;
    
    @Override
    public void registrar(Inmueble inmueble) throws Exception {
                
        if(inmueble == null){
            throw new Exception("El inmueble no tiene información");
        }
        
        Inmueble objInmueble = inmuebleDAO.consultarPorCodigo(inmueble.getCodigoInmueble());
        
        if(objInmueble != null){
            throw new Exception("El inmueble ya existe");
        }
        
        if((inmueble.getCodigoInmueble() == null)||(inmueble.getCodigoInmueble().equals(""))){
            throw new Exception("El codigo del inmueble no puede ser vacio");
        }
        
        inmuebleDAO.registrar(inmueble);
    }

    @Override
    public void modificar(Inmueble inmueble) throws Exception {
              
        if(inmueble == null){
             throw new Exception("El inmueble no tiene información");
        }
        
        Inmueble objInmueble = inmuebleDAO.consultarPorCodigo(inmueble.getCodigoInmueble());
                
        if(objInmueble == null){
            throw new Exception("El inmueble no existe");
        }
        
        if((inmueble.getCodigoInmueble() == null)||(inmueble.getCodigoInmueble().equals(""))){
            throw new Exception("La cuenta no puede ser vacio");
        }
        inmuebleDAO.modificar(inmueble);     
    }

    @Override
    public void eliminar(Inmueble inmueble) throws Exception {
           
        if(inmueble == null){
             throw new Exception("El inmueble no tiene información");
        }
        
        Inmueble objInmueble = inmuebleDAO.consultarPorCodigo(inmueble.getCodigoInmueble());
        
        if(objInmueble == null){
             throw new Exception("El inmueblea a eliminar no existe");             
        }
        
        inmuebleDAO.eliminar(objInmueble);
    }

    @Override
    public List<Inmueble> consultar() throws Exception {
         return inmuebleDAO.consultar();
    }

    @Override
    public Inmueble consultarPorCodigo(Long codigo) throws Exception {
        if(codigo == null || codigo.equals("")){
            throw new Exception("El codigo es obligatorio");
        }
        return inmuebleDAO.consultarPorCodigo(codigo);
    }

    @Override
    public List<Inmueble> consultarPorCliente(Long cedula) throws Exception {
        
        if(cedula == null || cedula.equals("")){
            throw new Exception("La cedula es obligatoria");
        }
        
        Clientes objCliente = clienteDAO.consultarPorCedula(cedula);
        
        if(objCliente == null){
            throw new Exception("El cliente no existe");
        }
        
        return inmuebleDAO.consultarPorCliente(cedula);
    }

    @Override
    public List<Inmueble> consultarDsiponibles() throws Exception {
        return inmuebleDAO.consultarDisponibles();
    }
}
